const isTouchDevice = (): boolean => {
  // 基础触摸检测
  const hasOntouchstart = 'ontouchstart' in window;
  const hasTouchPoints = navigator.maxTouchPoints > 0;
  
  // 检测是否为主要的触摸设备（手机、平板）
  const userAgent = navigator.userAgent.toLowerCase();
  const isMobile = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(userAgent);
  const isTablet = /ipad|android(?!.*mobile)|tablet/i.test(userAgent);
  
  // 检测屏幕尺寸 - 小屏幕更可能是触摸设备
  const isSmallScreen = window.innerWidth <= 768 || window.innerHeight <= 768;
  
  // Windows 系统特殊处理：即使支持触摸，如果是大屏幕桌面设备，优先使用鼠标交互
  const isWindows = /windows/i.test(userAgent);
  const isLargeScreen = window.innerWidth >= 1024 && window.innerHeight >= 768;
  
  // 最终判断逻辑：
  // 1. 明确的移动设备 -> 触摸设备
  // 2. Windows 大屏幕设备 -> 非触摸设备（即使支持触摸）
  // 3. 其他情况根据触摸支持和屏幕尺寸判断
  let isTouchDevice: boolean;
  
  if (isMobile || isTablet) {
    isTouchDevice = true;
  } else if (isWindows && isLargeScreen) {
    isTouchDevice = false; // Windows 大屏幕优先使用鼠标
  } else {
    isTouchDevice = (hasOntouchstart || hasTouchPoints) && isSmallScreen;
  }
  
  return isTouchDevice;
};

export default isTouchDevice;
